使用 Node 原生模块


使用 NPM 安装

对于 LTS 版本

使用相同版本和架构的 Node.js 和 NW.js

以下说明仅适用于使用的是相同版本和架构的 Node.js 和 NW.js。

如果您使用的是 LTS 版本,在经过下面的操作后,可以支持通过 npm 安装的原生模块:

对于非 LTS 版本

如果您使用的是非 LTS 版本,由于 V8 中的 ABI 差异,您需要全局安装 nw-gyp 以构建模块。

下面的说明同样可用于 LTS 版本。

要给 NW.js 安装原生模块,运行下面的命令:

# 全局安装 nw-gyp
npm install -g nw-gyp
# 配置目标 NW.js 版本
export npm_config_target=0.18.5
# 配置构建架构 ia32 或 x64
export npm_config_arch=x64
export npm_config_target_arch=x64
# 配置使用 node-pre-gyp 构建模块的环境
export npm_config_runtime=node-webkit
export npm_config_build_from_source=true
# 配置 nw-gyp 作为 node-gyp
export npm_config_node_gyp=$(which nw-gyp)
# 运行 npm install
npm install

Windows 系统

您需要有一个编译器,可以通过安装 Visual C++ Build Tools 来获得一个。
您还需要有 Python 2.7 环境(不支持 3.x 版本)。
需要将环境变量 npm_config_node_gyp 设置为 path\to\global\node_modules\nw-gyp\bin\nw-gyp.js,而不是 nw-gyp.cmd 处理脚本,这是 npm 的 bug
在 Windows 上,您需要使用 set 来设置环境变量,而不是 export

这是一个完整的示例(Windows 10,Visual C++ Build Tool v2015):

set PYTHON=C:\Python27\python.exe
set npm_config_target=0.21.6
set npm_config_arch=x64
set npm_config_runtime=node-webkit
set npm_config_build_from_source=true
set npm_config_node_gyp=C:\Users\xxxxxxxxx\AppData\Roaming\npm\node_modules\nw-gyp\bin\nw-gyp.js
npm install --msvs_version=2015

手动重新构建

推荐完整安装依赖项

在切换 NW.js 版本后,推荐的方式是删除 node_modules 文件夹并重新 npm install

如果切换了 NW.js 版本,您可以使用下面的工具重新构建 每一个 原生模块,而 无需重新安装所有模块。因为构建原生模块需要 binding.gyp,您可以通过查找 binding.gyp 文件轻松找到所有的原生模块。

重新构建所有的原生模块

确保您 重新构建了所有的原生模块,否则您会看到各种各样的报错甚至崩溃。如果手动重新构建没有效果,尝试删除 node_modules 文件夹并重新 npm install

nw-gyp

nw-gypnode-gyp 的一个定制版,用于支持 NW.js 的特定头文件和库。

它的用法与 node-gyp 相同,除了您需要手动指定 NW.js 的版本和架构(x64ia32)。

npm install -g nw-gyp
cd myaddon
nw-gyp rebuild --target=0.13.0 --arch=x64

参考 https://github.com/nwjs/nw-gyp

node-pre-gyp

一些包使用了 node-pre-gyp,它即支持通过 node-gyp 构建 Node.js 的原生模块,也支持通过 nw-gyp 构建 NW.js 的原生模块。

node-pre-gyp 的用法如下:

npm install -g node-pre-gyp
cd myaddon
node-pre-gyp build --runtime=node-webkit --target=0.13.0 --target_arch=x64

参考 https://github.com/mapbox/node-pre-gyp